import socket
import time
from datetime import datetime


def send_and_receive_message():
    # 服务器的IP地址和端口
    server_ip = '127.0.0.1'
    server_port = 18787

    try:
        # 每次循环创建新的socket连接
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            # 连接到服务器
            s.connect((server_ip, server_port))
            print(f"已成功连接到服务器 {server_ip}:{server_port}")

            # 要发送的字符串
            message = "中国"

            # 发送数据
            s.sendall(message.encode('utf-8'))
            print(f"已发送消息: {message}")

            # 接收服务器返回的消息
            response = s.recv(1024)
            if response:
                print(f"收到服务器返回: {response.decode('GBK')}")
            else:
                print("未收到服务器返回的消息")

        # 连接会在with语句结束后自动断开
        print("连接已断开\n")

    except ConnectionRefusedError:
        print(f"无法连接到服务器 {server_ip}:{server_port}，请检查服务器是否已启动")
    except Exception as e:
        print(f"发生错误: {str(e)}")


if __name__ == "__main__":
    # 循环10次调用服务
    for i in range(1,2):
        print(f"----- 第 {i + 1} 次调用 -----")
        print(datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])  # 去掉最后三位毫秒后的零
        send_and_receive_message()
        print(datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])  # 去掉最后三位毫秒后的零
        # 可以根据需要添加间隔时间，避免请求过于频繁
        # time.sleep(1)  # 休眠1秒
